
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.SwingConstants;
import javax.swing.JSeparator;

import java.awt.Color;
import java.awt.Font;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.swing.JTextArea;
import javax.swing.JScrollPane;
/**
 * Fenêtre de consultation d'un lecteur
 * Code du JFrame généré par Window Builder/Swing Designer.
 * @author IUT,  A.Culet 
 * @version 1.0
 */

public class VueRetourEmprunt extends Vue {

	private static final long serialVersionUID = 1L;
	
	private Lecteur lecteur;
	private int index;
	
	private JPanel contentPane;
	private JTextField textFieldNumLecteur;
	private JTextField textFieldPrenom;
	private JTextField textFieldNom;
	private JComboBox comboEmprunts;
	
	// pour que les boutons soient des attributs, il faut faire "convert local to field"
	private JButton buttonRech;
	private JButton buttonAnnuler;
	private JButton buttonFermer;
	private JButton btnFermer;
	private JTextField txtTitre;
	private JTextField txtAuteur;
	private JTextField txtDate;
	private JTextField txtRetard;
	private JTextField txtAmende;
	private JLabel lblAmende;
	
	
	/**
	 * Create the frame.
	 */
	public VueRetourEmprunt(final Controleur controleur) {
		super(controleur);
		setTitle("Retourner un ouvrage");
		//setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
		setBounds(100, 100, 452, 515);
		contentPane = new JPanel();
		this.addWindowListener (new WindowAdapter() {
			public void windowClosing (WindowEvent e) {
			getControleur().fermerVue(VueRetourEmprunt.this);
			}
		});
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNewLabel = new JLabel("Numéro Lecteur");
		lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel.setBounds(3, 66, 101, 15);
		contentPane.add(lblNewLabel);
		
		textFieldNumLecteur = new JTextField();
		textFieldNumLecteur.setBounds(112, 64, 114, 19);
		contentPane.add(textFieldNumLecteur);
		textFieldNumLecteur.setColumns(10);
		
		JLabel lblNewLabel_1 = new JLabel("Prenom");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_1.setBounds(17, 129, 61, 35);
		contentPane.add(lblNewLabel_1);
		
		textFieldPrenom = new JTextField();
		textFieldPrenom.setEditable(false);
		textFieldPrenom.setBounds(112, 137, 214, 19);
		contentPane.add(textFieldPrenom);
		textFieldPrenom.setColumns(10);
		
		buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueRetourEmprunt.this);}
		});
		buttonAnnuler.setBounds(255, 98, 107, 25);
		contentPane.add(buttonAnnuler);
		
		buttonRech = new JButton("Rechercher");
		buttonRech.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				getControleur().rechLecteur(textFieldNumLecteur.getText());
				buttonFermer.setEnabled(true);
			}
		});
		buttonRech.setBounds(255, 61, 107, 25);
		contentPane.add(buttonRech);
		
		buttonFermer = new JButton("Fermer");
		buttonFermer.setEnabled(false);
		buttonFermer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueRetourEmprunt.this);}
		});
		buttonFermer.setBounds(183, 438, 107, 25);
		contentPane.add(buttonFermer);
		
		JLabel lblNewLabel_2 = new JLabel("Nom");
		lblNewLabel_2.setHorizontalAlignment(SwingConstants.RIGHT);
		lblNewLabel_2.setBounds(17, 170, 61, 15);
		contentPane.add(lblNewLabel_2);
		
		textFieldNom = new JTextField();
		textFieldNom.setEditable(false);
		textFieldNom.setColumns(10);
		textFieldNom.setBounds(112, 168, 214, 19);
		contentPane.add(textFieldNom);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(97, 199, 250, 2);
		contentPane.add(separator);
		
		JLabel lblNewLabel_21 = new JLabel("Emprunts");
		lblNewLabel_21.setFont(new Font("Dialog", Font.BOLD | Font.ITALIC, 12));
		lblNewLabel_21.setBounds(193, 209, 107, 15);
		contentPane.add(lblNewLabel_21);
		
		comboEmprunts = new JComboBox();
		comboEmprunts.setEnabled(false);
		comboEmprunts.setBounds(34, 236, 383, 25);
		contentPane.add(comboEmprunts);
		
		btnFermer = new JButton("Retour emprunt");
		btnFermer.setEnabled(false);
		btnFermer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				controleur.supprEmprunt(lecteur,index);
			}
		});
		btnFermer.setBounds(269, 349, 148, 25);
		contentPane.add(btnFermer);
		
		txtTitre = new JTextField();
		txtTitre.setEditable(false);
		txtTitre.setBounds(112, 273, 114, 19);
		contentPane.add(txtTitre);
		txtTitre.setColumns(10);
		
		txtAuteur = new JTextField();
		txtAuteur.setEditable(false);
		txtAuteur.setBounds(112, 304, 114, 19);
		contentPane.add(txtAuteur);
		txtAuteur.setColumns(10);
		
		txtDate = new JTextField();
		txtDate.setEditable(false);
		txtDate.setBounds(303, 273, 114, 19);
		contentPane.add(txtDate);
		txtDate.setColumns(10);
		
		txtRetard = new JTextField();
		txtRetard.setEditable(false);
		txtRetard.setBounds(303, 304, 114, 19);
		contentPane.add(txtRetard);
		txtRetard.setColumns(10);
		
		JLabel lblTitre = new JLabel("Titre");
		lblTitre.setBounds(44, 271, 61, 15);
		contentPane.add(lblTitre);
		
		JLabel lblAuteur = new JLabel("Auteur");
		lblAuteur.setBounds(34, 306, 61, 15);
		contentPane.add(lblAuteur);
		
		JLabel lblDate = new JLabel("Date");
		lblDate.setBounds(255, 273, 61, 15);
		contentPane.add(lblDate);
		
		JLabel lblRetard = new JLabel("Retard");
		lblRetard.setBounds(255, 306, 61, 15);
		contentPane.add(lblRetard);
		
		lblAmende = new JLabel("Amende");
		lblAmende.setEnabled(false);
		lblAmende.setBounds(17, 354, 61, 15);
		contentPane.add(lblAmende);
		
		txtAmende = new JTextField();
		txtAmende.setEnabled(false);
		txtAmende.setEditable(false);
		txtAmende.setBounds(112, 352, 114, 19);
		contentPane.add(txtAmende);
		txtAmende.setColumns(10);
		}
	
	
	/**
	 * alimentation des composants d'affichage affichant les emprunts du lecteur
	 */
	public void alimente(final Lecteur lect)
	{
		for(ActionListener a : comboEmprunts.getActionListeners())
			comboEmprunts.removeActionListener(a);
		comboEmprunts.removeAllItems();
		lecteur = lect;
		GregorianCalendar date = new GregorianCalendar();
		textFieldPrenom.setText(lecteur.getPrenom());
		textFieldNom.setText(lecteur.getNom());
		for (Emprunt e : lecteur.getEmprunts()) 
		{
			date = e.getDateFin();
			comboEmprunts.addItem("Titre : " + e.getExemplaire().getOuvrage().getTitre() +
						" - Numéro " + String.valueOf(e.getExemplaire().getNumero())+" - Date retour : " +
						ESDate.write(date)+"\n");
		}
		comboEmprunts.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				index = comboEmprunts.getSelectedIndex();
				setEtat(finale);
				alimente(lecteur.getEmprunts().get(comboEmprunts.getSelectedIndex()));
			}
		});
	}
	
	public void alimente(Emprunt e)
	{
		txtAmende.setBackground(Color.white);
		txtRetard.setBackground(Color.white);
		GregorianCalendar date = new GregorianCalendar();
		txtTitre.setText(e.getExemplaire().getOuvrage().getTitre());
		txtAuteur.setText(e.getExemplaire().getOuvrage().getAuteur().toString());
		txtDate.setText(ESDate.write(e.getDateEmprunt()));
		String s = String.valueOf(ESDate.retard(e.getDateFin(),date));
		txtRetard.setText(s);
		if ( ESDate.retard(e.getDateFin(),date) != 0)
		{
			getControleur();
			s= String.valueOf(Integer.parseInt(s) * Controleur.PENALITE);
			txtAmende.setText(s);
			txtAmende.setBackground(Color.red);
			txtRetard.setBackground(Color.red);
			txtAmende.setEnabled(true);
			lblAmende.setEnabled(true);
		}
			
	}
	
	public void setEtat (int etat){
		switch (etat) {
		case initiale:{
			for(ActionListener a : comboEmprunts.getActionListeners())
				comboEmprunts.removeActionListener(a);
			comboEmprunts.removeAllItems();
			comboEmprunts.setEnabled(false);
			btnFermer.setEnabled(false);
			lecteur = null;
			textFieldPrenom.setText("");
			textFieldNom.setText("");
			txtAmende.setText("");
			txtDate.setText("");
			txtAuteur.setText("");
			txtTitre.setText("");
			txtAmende.setBackground(Color.white);
			txtRetard.setBackground(Color.white);
			break;
			}
		case inter1:{
			comboEmprunts.setEnabled(true);
			btnFermer.setEnabled(false);
			txtAmende.setText("");
			txtRetard.setText("");
			txtDate.setText("");
			txtAuteur.setText("");
			txtTitre.setText("");
			txtAmende.setEnabled(false);
			lblAmende.setEnabled(false);
			txtAmende.setBackground(Color.white);
			txtRetard.setBackground(Color.white);
			break;
			}
		case finale:{
			btnFermer.setEnabled(true);
			break;
			}
		}
	}
}
